#pragma once
#include <memory>

#include "DBManager/Common/DBManagerExport.h"
#include "DBManager/Common/Trait/InputTrait.h"
#include "DBManager/DBServiceFactory.h"
#include "DataStructure/Input/Table/TABRND1Data.h"

SG_DBMANAGER_NAMESPACE_OPEN

/**
 * @brief    Defines power spectral density as a tabular function of frequency
 * for use in random analysis. Referenced by the RANDPS entry.
 *
 * @author   wuxingchuang
 * @date     2025.10.11
 */
class DBManager_DECLSPEC ITABRND1Service
    : public AddTrait<SG::DataStructure::FEM::TABRND1Data>,
      public FindByIndexTrait<SG::DataStructure::FEM::TABRND1Data>,
      public FindByIdTrait<SG::DataStructure::FEM::TABRND1Data>,
      public SizeTrait,
      public GetAllIdTrait,
      public CountTrait {
 public:
  virtual ~ITABRND1Service() {};
};

template <>
std::shared_ptr<ITABRND1Service> DBManager_DECLSPEC DBServiceFactory::get();

SG_DBMANAGER_NAMESPACE_CLOSE
